#define _CRT_SECURE_NO_WARNINGS 1
#include <string.h>


//
//int Judge(long x, char* s)
//{
//    for (int i = 0; i < strlen(s); ++i)
//    {
//        int tmp = s[i] - 'a';
//        if ((1 << tmp) & x)
//        {
//            return 0;
//        }
//    }
//    return 1;
//}
//int slove(char* s)
//{
//    long ret = 0;
//    for (int i = 0; i < strlen(s); ++i)
//    {
//        int tmp = s[i] - 'a';
//        ret |= 1 << tmp;
//    }
//    return ret;
//}
//int main()
//{
	/*char words[][6] = { "eae","ea","aaf","bda","fcf","dc","ac","ce","cefde","dabae" };
	int wordsSize = sizeof(words) / sizeof(words[0]);*/
//    int max = 0;
//    for (int i = 0; i < wordsSize; ++i)
//    {
//        long cmp = slove(words[i]);
//        for (int j = i + 1; j < wordsSize; ++j)
//        {
//            int sum = 0;
//            if (Judge(cmp, words[j]))
//            {
//                sum = strlen(words[i]) * strlen(words[j]);
//                if (sum > max)
//                {
//                    max = sum;
//                }
//                else
//                {
//                    if (strlen(words[i]) > strlen(words[j]))
//                    {
//                        words[j][0] = 0;
//                    }
//                    else
//                    {
//                        words[i][0] = 0;
//                    }
//                }
//            }
//        }
//    }
//	return 0;
//}


//int main()
//{
//	char words[][15] = { "bbddabab","cbcddbdd","bbcadcab","dabcacad","cddcacbc","ccbdbcba","cbddaccc","accdcdbb" };
//	int wordsSize = sizeof(words) / sizeof(words[0]);
//    int index = 0;
//    int len = strlen(words[0]);
//    char arr[100] = { 0 };
//    for (int i = 0; i < len; ++i)
//    {
//        int sum = 1;
//        for (int j = 1; j < wordsSize; ++j)
//        {
//            int f = 1;
//            for (int x = 0; x < strlen(words[j]); ++x)
//            {
//                if (words[0][i] == words[j][x])
//                {
//                    ++sum;
//                    words[j][x] = ' ';
//                    f = 0;
//                    break;
//                }
//            }
//            if (f)
//            {
//                break;
//            }
//        }
//        if (sum == wordsSize)
//        {
//            arr[index++] = words[0][i];
//        }
//    }
//    /*for (int i = 0; i < 26; ++i)
//    {
//        int j = 0;
//        while (has[i] / wordsSize)
//        {
//            int sum = has[i] / wordsSize;
//            while (sum--)
//            {
//                words[index][0] = i + 'a';
//                words[index++][1] = 0;
//            }
//            break;
//        }
//    }*/
// }



long solve(char* s)
{
    long ret = 0;
    for (int i = 0; i < strlen(s); ++i)
    {
        int tmp = s[i] - 'a';
        ret |= 1 << tmp;
    }
    return ret;
}
int main()
{
	char words[][100] = { "Hello","Alaska","Dad","Peace" };
	int wordsSize = sizeof(words) / sizeof(words[0]);
    long line1 = solve("qwertyuiop");
    long line2 = solve("asdfghjkl");
    long line3 = solve("zxcvbnm");
    static char arr[10][101] = { 0 };
    for (int i = 0; i < wordsSize; ++i)
    {
        strcat(arr[i], words[i]);
    }
    int index = 0;
    int row = 0;
    for (int i = 0; i < wordsSize; ++i)
    {
        long cmp = solve(words[i]);
        if ((line1 & cmp) == cmp || (line2 & cmp) == cmp || (line3 & cmp) == cmp)
        {
            int col = 0;
            for (int x = 0; x < strlen(words[i]); ++x)
            {
                arr[row][col++] = words[i][x];
            }
            arr[row][col] = 0;
            ++row;
            ++index;
        }
    }
    arr[index][0] = 0;
    return 0;
}
